package com.fourWork;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 2. 编程题
 * <p>
 * 实现将指定目录中的所有内容删除，包含子目录中的内容都要全部删除。
 */
public class TwoTest {

    /*
    boolean exists() 测试此抽象路径名表示的文件或目录是否存在
    String getName() 用于获取文件的名称
    long length() 返回由此抽象路径名表示的文件的长度
    long lastModified() 用于获取文件的最后一次修改时间
    String getAbsolutePath() 用于获取绝对路径信息
    boolean delete() 用于删除文件，当删除目录时要求是空目录
    boolean createNewFile() 用于创建新的空文件
    boolean mkdir() 用于创建目录
    boolean mkdirs() 用于创建多级目录
    File[] listFiles() 获取该目录下的所有内容
    boolean isFile() 判断是否为文件
    boolean isDirectory() 判断是否为目录
    File[] listFiles(FileFilter filter) 获取目录下满足筛选器的所有内容
     */
    //声明File类型的对象，获取文件或目录的特征信息
    static File[] fileArray = null;

    /*
    查询文件夹/文件方法
     */
    public static void show(File file) {
        //给File对象赋值，获取目录下满足筛选器的所有内容
        fileArray = file.listFiles();
        //foreach遍历，对路径下的所有文件进行遍历查询
        for (File f : fileArray) {
            String name = f.getName();
            //boolean isFile() 判断是否为文件
            if (f.isFile()) {
                System.out.println(name + "路径为：" + f.getAbsolutePath());
            }
            //boolean isDirectory() 判断是否为目录
            if (f.isDirectory()) {
                System.out.println("[" + name + "]");
                show(f);
            }
        }
    }

    /*
    创建文件方法
     */
    public static void create(List<String> list) {
        //声明File类型的对象，获取文件或目录的特征信息
        File file = null;
        //foreach对集合进行循环遍历，List集合中保存的为路径
        for (String f : list) {
            //给File对象赋值
            file = new File(f);
            //判断文件是否存在，不存在则创建
            if (!file.exists()) {
                //if判断，如果路径中包括.则为文件，否则为文件夹
                if (f.contains(".")) {
                    try {
                        //创建文件
                        file.createNewFile();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } else {
                    //创建文件夹
                    file.mkdirs();
                }
            } else {
                System.out.println(f + "文件已存在");
            }
        }
    }

    /*
    文件删除方法
     */
    public static void delete(File file) {
        //给File对象赋值，获取目录下满足筛选器的所有内容
        fileArray = file.listFiles();
        //foreach对集合进行遍历
        for (File f : fileArray) {
            //获取文件名
            String name = f.getName();
            //判断，如果为文件，执行以下代码块
            if (f.isDirectory()) {
                //调用自身
                delete(f);
                //删除文件
                f.delete();
                System.out.println("文件夹" + name + "删除成功");
            }
            //判断，如果为文件夹，执行以下代码块
            if (f.isFile()) {
                // delete(f);
                //删除文件夹
                f.delete();
                //获取该文件夹的上一级文件夹
                String parent = f.getParent();
                //System.out.println(parent);
                //调用自身，且赋值上一级文件夹
                delete(new File(parent));
                System.out.println("文件》》》" + name + "删除成功");
            }

        }
    }


    public static void main(String[] args) {
/*        //File(String pathname) 根据参数指定的路径名来构造对象
        File file=new File("d:/a.txt");
        //System.out.println(file.exists());
        if(!file.exists()){
            try {
                file.createNewFile();
                System.out.println(file.getName()+"文件创建成功");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else {
            file.delete();
            System.out.println("删除成功");
        }*/



/*
        File file1=new File("d:/a/b/c");
        if(!file1.exists()){
            file1.mkdirs();
            System.out.println(file1.getName()+"创建成功");
            System.out.println(file1.isDirectory()?"目录":"文件");
        }else {
//            file1.delete();
//            System.out.println("删除成功");
        }
*/
        //show(new File("d:/a"));
        List<String> list = new ArrayList<>();
        list.add("d:/a");
        list.add("d:/a/b");
        list.add("d:/a/b/c");
        list.add("d:/a/bbbbb.txt");
        list.add("d:/a/b/ccccc.txt");
        list.add("d:/a/b/c/1.txt");
        list.add("d:/a/b/c/2.zip");
        list.add("d:/a/b/c/3.mp");
        list.add("d:/a/b/c/4.png");
        list.add("d:/a/b/c/5.");
        //调用创建文件的方法
        create(list);

        System.out.println("--------------------------");
        //调用删除文件夹/文件的方法
        delete(new File("d:/a"));


    }


}
